$.fn.extend({
	checkCitieFiltro: function(secondTime) {	
		$(this).each(function(){			
	        $(this).attr("checked", true).parents("li").addClass("selected");
	        $(this).addCitieFiltro();
	       
            if(!secondTime) {
                if($("#groupRegiao.aba-On").length > 0) {
            	    var begin = $(this).attr("id").replace(/_Regiao[0-9]+/, "_");
                    if(begin) {
            		    $("#listaCidadesFiltro input[id^='"+begin+"'][id!='"+$(this).attr("id")+"']").checkCitieFiltro(true);
            	    }
                }
            }
	    });
		fatherCheck();
	},
	uncheckCitieFiltro: function(secondTime) {	
		
		$(this).each(function(){			
			$(this).attr("checked", false).parents("li").removeClass("selected");
	        $(this).removeCitieFiltro();
	      
	        if(!secondTime) {    
                if($("#groupRegiao.aba-On").length > 0) {
                    var begin = $(this).attr("id").replace(/_Regiao[0-9]+/, "_");
                    if(begin) {
                        $("#listaCidadesFiltro input[id^='"+begin+"'][id!='"+$(this).attr("id")+"']").uncheckCitieFiltro(true);
                    }
                }
            }
	    });
		fatherCheck();
	},
	addCitieFiltro: function() {
		$(this).each(function(){
			
			var idToAppend = "selected_"+$(this).attr("id");
			var idToVerify = $(this).attr("id").replace(/_Regiao[0-9]+/, "");

			if($("#cidadesFiltro [id^='selected_"+idToVerify+"_']").length == 0) {
	            var toAppend = "";
	            toAppend += "<span id='"+idToAppend+"'>";
	            toAppend += "<li id='cidadeDoFiltro"+$(this).val()+"'>";
	            toAppend += "<input type='hidden' name='cidadeFiltro[]' value='"+$(this).val()+"'>";
	            toAppend += "<span>"+$(this).parents('li').text()+" - " +$("input:checkbox[id^='cidadeFiltro"+$(this).val()+"']").attr("sigla")+"</span>";    
	            toAppend += "<img src='http://img.catho.com.br/site/busca2009/icoFechar.gif' border='0' style='cursor:pointer' class='remove'/>";
	            toAppend += "</li></span>";
	            $("#cidadesFiltro").append(toAppend);
	            registerRemoveCidadeFiltro($("#cidadeDoFiltro"+$(this).val()));
                $("#cidadesFiltro").parent("div").scrollTop($("#cidadesFiltro li").length*35);
			}
		});
	},
	removeCitieFiltro: function() {
		$(this).each(function(){
			$("#cidadeDoFiltro"+$(this).val()).remove();
            $("#selected_"+$(this).attr("id")).remove();
		});
	}
});

function registerCidadesFiltro() {
	$("#boxFiltroCidade li").click(function(){
		var checkbox = $(this).find("input:checkbox[name='cidadeFiltroId[]']");
		$(checkbox).attr("checked", !$(checkbox).attr("checked"));
		if($(checkbox).attr("checked") == true) {
			$(checkbox).checkCitieFiltro();
		} else {
			$(checkbox).uncheckCitieFiltro();
		}
        zebraFiltro();
    });	
	

    $("#boxFiltroCidade li input:checkbox").click(function(){
        $(this).attr("checked", !$(this).attr("checked"));
    });
}


function zebraFiltro() {

	$("#cidadesFiltro li:odd").removeClass("li-white");
	$("#cidadesFiltro li:even").addClass("li-white");

}


function registerRemoveCidadeFiltro(obj) {
		
	$(obj).find(".remove").click(function(){ 		
		$("#listaCidadesFiltro input:checkbox[id^='cidadeFiltro"+$(this).siblings("input:hidden[name='cidadeFiltro[]']").val()+"']").uncheckCitieFiltro();
		$(this).parents("li").remove();
		zebraFiltro();
	});
}


function atualizaRegioes(){
	
	$("#listaCidadesFiltro .regiaoInput").click(function(){	
		if($(this).attr("checked")) {
			$(this).nextAll("ul:first").find("input:checkbox").checkCitieFiltro();
			zebraFiltro();
		} else {
			$(this).nextAll("ul:first").find("input:checkbox").uncheckCitieFiltro();
			zebraFiltro();
		}
	});
}


function atualizaCidadesFiltro(){
	
	if($("#groupRegiao").attr("class") == "aba-On"){
		tipo = "regiao";
	}else{
		tipo = "alfa";
	}

   $.ajax({        
       url: 'classes/vaga/VagPrincipal.class.php',
       type: 'POST',
       data: "state=loadCidadeFiltro&estadoIdFiltro="+$('#estadoIdFiltro').val()+"&tipo="+tipo+"&"+$("input:hidden[name='cidadeFiltro[]']").serialize(),
       dataType: 'html',
       beforeSend: function() {                
           $("#estadoIdFiltro").attr("disabled", true);
           $("#box-List").hide(); 
           $("#listaCidadesFiltro").hide();
           $("#box-List-loading").show();
       },          
       success: function(html){
           $("#listaCidadesFiltro").html(html);
           registerCidadesFiltro();
           $("#box-List").show();
           $("#listaCidadesFiltro").show();
           $("#box-List-loading").hide();
           $("#estadoIdFiltro").attr("disabled", false);
           atualizaRegioes();
           fatherCheck();
       }
   });	
}


function fatherCheck() {

    $("#listaCidadesFiltro input.regiaoInput:not(:checked)").each(function(){
            if($(this).nextAll("ul:first").find("input:checkbox:not(:checked)").length == 0) {
            $(this).attr("checked", true);
        }
    });

    $("#listaCidadesFiltro input.regiaoInput:checked").each(function(){
            if($(this).nextAll("ul:first").find("input:checkbox:not(:checked)").length != 0) {
            $(this).attr("checked", false);
        }
    });
}


$(document).ready(function(){

    $("#groupRegiao, #groupAlfa").click(function() {
        if(!$(this).hasClass("aba-On")) {
        	$("#groupRegiao, #groupAlfa").toggleClass("aba-On").toggleClass("aba-Off");
        	atualizaCidadesFiltro();
        }
    });

    $("#estadoIdFiltro").change(function(){
    	atualizaCidadesFiltro();
    });
    
    registerCidadesFiltro();
    atualizaCidadesFiltro();
    zebraFiltro();
    
    $("li[id^='cidadeDoFiltro']").each(function(){
    	registerRemoveCidadeFiltro($(this));
    })
});
